home *** CD-ROM | disk | FTP | other *** search
/ Aminet 12 / Aminet 12 (1996)(GTI - Schatztruhe)[!][Jun 1996].iso / Aminet / dev / e / Text_Plug.lha / text_plug.e < prev    next >
Encoding:
Text File  |  1996-02-28  |  2.3 KB  |  81 lines

  1. OPT OSVERSION=37, MODULE
  2.  
  3. MODULE 'tools/EasyGUI',
  4.        'graphics/rastport',
  5.        'graphics/text',
  6.        'intuition/screens',
  7.        'intuition/intuition',
  8.        '*fonts'
  9.  
  10. EXPORT DEF deffont:PTR TO textfont, deffixedfont:PTR TO textfont
  11.  
  12. EXPORT OBJECT text_plug OF plugin
  13.   PRIVATE
  14.   str,   slen, sfont:PTR TO textfont
  15.   label, llen, lfont:PTR TO textfont
  16.   min, hgt, base, spos
  17. ENDOBJECT
  18.  
  19. EXPORT PROC create(str, label=NIL, min=0, sfont=NIL:PTR TO textfont,
  20.                    lfont=NIL:PTR TO textfont) OF text_plug
  21.   DEF textrp:PTR TO rastport
  22.   self.str:=IF str THEN str ELSE ''
  23.   self.slen:=StrLen(self.str)
  24.   IF (sfont=NIL) AND (deffixedfont=NIL) THEN Raise("DFNT")
  25.   self.sfont:=IF sfont THEN sfont ELSE deffixedfont
  26.   self.base:=self.sfont.baseline
  27.   self.hgt:=self.base+self.sfont.ysize-self.sfont.baseline
  28.   self.label:=label
  29.   NEW textrp
  30.   SetFont(textrp, self.sfont)
  31.   self.min:=IF min THEN min*self.sfont.xsize ELSE TextLength(textrp,self.str,self.slen)
  32.   IF label
  33.     self.llen:=StrLen(label)
  34.     IF (lfont=NIL) AND (deffont=NIL) THEN Raise("DFNT")
  35.     self.lfont:=IF lfont THEN lfont ELSE deffont
  36.     self.base:=Max(self.base, self.lfont.baseline)
  37.     self.hgt:=Max(self.hgt, self.base+self.lfont.ysize-self.lfont.baseline)
  38.     SetFont(textrp, self.lfont)
  39.     self.spos:=4+TextLength(textrp, self.label, self.llen)
  40.     self.min:=self.min+self.spos
  41.   ELSE
  42.     self.spos:=0
  43.   ENDIF
  44.   END textrp
  45. ENDPROC
  46.  
  47. EXPORT PROC will_resize() OF text_plug IS RESIZEX
  48.  
  49. EXPORT PROC min_size(fh) OF text_plug IS self.min, self.hgt
  50.  
  51. EXPORT PROC render(x,y,xs,ys,win) OF text_plug IS self.draw(win, self.label)
  52.  
  53. PROC draw(win:PTR TO window,label=NIL) OF text_plug
  54.   DEF res:textextent, fit, old, f, r:PTR TO rastport
  55.   r:=win.rport
  56.   f:=r.font
  57.   IF label
  58.     SetFont(r, self.lfont)
  59.     SetAPen(r, 1)
  60.     Move(r, self.x, self.y+self.base)
  61.     Text(r, self.label, self.llen)
  62.   ELSE
  63.     old:=SetStdRast(r)
  64.     Box(self.x+self.spos, self.y, self.x+self.xs-1, self.y+self.ys-1, 0)
  65.     SetStdRast(old)
  66.   ENDIF
  67.   SetFont(r, self.sfont)
  68.   IF fit:=TextFit(r, self.str,self.slen, res,NIL,1, self.xs-self.spos,self.ys)
  69.     SetAPen(r, 1)
  70.     Move(r, self.x+self.spos, self.y+self.base)
  71.     Text(r, self.str, fit)
  72.   ENDIF
  73.   SetFont(r, f)
  74. ENDPROC
  75.  
  76. EXPORT PROC settext(gh:PTR TO guihandle, str) OF text_plug
  77.   self.str:=IF str THEN str ELSE ''
  78.   self.slen:=StrLen(self.str)
  79.   self.draw(gh.wnd)
  80. ENDPROC
  81.